Logs are important runtime information for any enterprise application deployed in production. Information extracted out of logs is used in a wide variety of ways over the lifetime of any application deployment, such as identifying access and/or security violations, troubleshooting a product issue, analyzing application performance, extracting performance metrics such as response times and run time memory usage, building a knowledge base related to usage patterns and/or trends, and analyzing large amounts of data, such as recommendation engines. Often the information that is captured in logs is turned into knowledge which can be used to improve the predictability and/or usability of an enterprise application. The kind of information and the amount of information that needs to be captured and processed in logs varies based on the requirements. For example, a log processing module that probes logs for security violations may evaluate information related to users, access control, and sequences of actions that have been performed on the data managed by that application. The traditional logging mechanisms used by loggers are linear, where a user can specify the level of detail required and various parameters, such as the package scope in which the logs need to be generated and the format of the logged data. These traditional logging mechanisms mostly rely on the log statements that have been embedded into the business logic of enterprise applications for various levels and details to generate a generic set of logs. Single log statements are used to extract all of the information required to analyze all kinds of issues.